home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / libxml2 / libxml / xmlIO.h < prev    next >
C/C++ Source or Header  |  2006-04-25  |  10KB  |  361 lines

  1. /*
  2.  * Summary: interface for the I/O interfaces used by the parser
  3.  * Description: interface for the I/O interfaces used by the parser
  4.  *
  5.  * Copy: See Copyright for the status of this software.
  6.  *
  7.  * Author: Daniel Veillard
  8.  */
  9.  
  10. #ifndef __XML_IO_H__
  11. #define __XML_IO_H__
  12.  
  13. #include <stdio.h>
  14. #include <libxml/xmlversion.h>
  15.  
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19.  
  20. /*
  21.  * Those are the functions and datatypes for the parser input
  22.  * I/O structures.
  23.  */
  24.  
  25. /**
  26.  * xmlInputMatchCallback:
  27.  * @filename: the filename or URI
  28.  *
  29.  * Callback used in the I/O Input API to detect if the current handler 
  30.  * can provide input fonctionnalities for this resource.
  31.  *
  32.  * Returns 1 if yes and 0 if another Input module should be used
  33.  */
  34. typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename);
  35. /**
  36.  * xmlInputOpenCallback:
  37.  * @filename: the filename or URI
  38.  *
  39.  * Callback used in the I/O Input API to open the resource
  40.  *
  41.  * Returns an Input context or NULL in case or error
  42.  */
  43. typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename);
  44. /**
  45.  * xmlInputReadCallback:
  46.  * @context:  an Input context
  47.  * @buffer:  the buffer to store data read
  48.  * @len:  the length of the buffer in bytes
  49.  *
  50.  * Callback used in the I/O Input API to read the resource
  51.  *
  52.  * Returns the number of bytes read or -1 in case of error
  53.  */
  54. typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len);
  55. /**
  56.  * xmlInputCloseCallback:
  57.  * @context:  an Input context
  58.  *
  59.  * Callback used in the I/O Input API to close the resource
  60.  *
  61.  * Returns 0 or -1 in case of error
  62.  */
  63. typedef int (XMLCALL *xmlInputCloseCallback) (void * context);
  64.  
  65. #ifdef LIBXML_OUTPUT_ENABLED
  66. /*
  67.  * Those are the functions and datatypes for the library output
  68.  * I/O structures.
  69.  */
  70.  
  71. /**
  72.  * xmlOutputMatchCallback:
  73.  * @filename: the filename or URI
  74.  *
  75.  * Callback used in the I/O Output API to detect if the current handler 
  76.  * can provide output fonctionnalities for this resource.
  77.  *
  78.  * Returns 1 if yes and 0 if another Output module should be used
  79.  */
  80. typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename);
  81. /**
  82.  * xmlOutputOpenCallback:
  83.  * @filename: the filename or URI
  84.  *
  85.  * Callback used in the I/O Output API to open the resource
  86.  *
  87.  * Returns an Output context or NULL in case or error
  88.  */
  89. typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename);
  90. /**
  91.  * xmlOutputWriteCallback:
  92.  * @context:  an Output context
  93.  * @buffer:  the buffer of data to write
  94.  * @len:  the length of the buffer in bytes
  95.  *
  96.  * Callback used in the I/O Output API to write to the resource
  97.  *
  98.  * Returns the number of bytes written or -1 in case of error
  99.  */
  100. typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer,
  101.                                        int len);
  102. /**
  103.  * xmlOutputCloseCallback:
  104.  * @context:  an Output context
  105.  *
  106.  * Callback used in the I/O Output API to close the resource
  107.  *
  108.  * Returns 0 or -1 in case of error
  109.  */
  110. typedef int (XMLCALL *xmlOutputCloseCallback) (void * context);
  111. #endif /* LIBXML_OUTPUT_ENABLED */
  112.  
  113. #ifdef __cplusplus
  114. }
  115. #endif
  116.  
  117. #include <libxml/globals.h>
  118. #include <libxml/tree.h>
  119. #include <libxml/parser.h>
  120. #include <libxml/encoding.h>
  121.  
  122. #ifdef __cplusplus
  123. extern "C" {
  124. #endif
  125. struct _xmlParserInputBuffer {
  126.     void*                  context;
  127.     xmlInputReadCallback   readcallback;
  128.     xmlInputCloseCallback  closecallback;
  129.     
  130.     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
  131.     
  132.     xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 */
  133.     xmlBufferPtr raw;       /* if encoder != NULL buffer for raw input */
  134.     int    compressed;        /* -1=unknown, 0=not compressed, 1=compressed */
  135.     int error;
  136.     unsigned long rawconsumed;/* amount consumed from raw */
  137. };
  138.  
  139.  
  140. #ifdef LIBXML_OUTPUT_ENABLED
  141. struct _xmlOutputBuffer {
  142.     void*                   context;
  143.     xmlOutputWriteCallback  writecallback;
  144.     xmlOutputCloseCallback  closecallback;
  145.     
  146.     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
  147.     
  148.     xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
  149.     xmlBufferPtr conv;      /* if encoder != NULL buffer for output */
  150.     int written;            /* total number of byte written */
  151.     int error;
  152. };
  153. #endif /* LIBXML_OUTPUT_ENABLED */
  154.  
  155. /*
  156.  * Interfaces for input
  157.  */
  158. XMLPUBFUN void XMLCALL    
  159.     xmlCleanupInputCallbacks        (void);
  160.  
  161. XMLPUBFUN int XMLCALL
  162.     xmlPopInputCallbacks            (void);
  163.  
  164. XMLPUBFUN void XMLCALL    
  165.     xmlRegisterDefaultInputCallbacks    (void);
  166. XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  167.     xmlAllocParserInputBuffer        (xmlCharEncoding enc);
  168.  
  169. XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  170.     xmlParserInputBufferCreateFilename    (const char *URI,
  171.                                                  xmlCharEncoding enc);
  172. XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  173.     xmlParserInputBufferCreateFile        (FILE *file,
  174.                                                  xmlCharEncoding enc);
  175. XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  176.     xmlParserInputBufferCreateFd        (int fd,
  177.                                              xmlCharEncoding enc);
  178. XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  179.     xmlParserInputBufferCreateMem        (const char *mem, int size,
  180.                                              xmlCharEncoding enc);
  181. XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  182.     xmlParserInputBufferCreateStatic    (const char *mem, int size,
  183.                                              xmlCharEncoding enc);
  184. XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  185.     xmlParserInputBufferCreateIO        (xmlInputReadCallback   ioread,
  186.                          xmlInputCloseCallback  ioclose,
  187.                          void *ioctx,
  188.                                              xmlCharEncoding enc);
  189. XMLPUBFUN int XMLCALL    
  190.     xmlParserInputBufferRead        (xmlParserInputBufferPtr in,
  191.                          int len);
  192. XMLPUBFUN int XMLCALL    
  193.     xmlParserInputBufferGrow        (xmlParserInputBufferPtr in,
  194.                          int len);
  195. XMLPUBFUN int XMLCALL    
  196.     xmlParserInputBufferPush        (xmlParserInputBufferPtr in,
  197.                          int len,
  198.                          const char *buf);
  199. XMLPUBFUN void XMLCALL    
  200.     xmlFreeParserInputBuffer        (xmlParserInputBufferPtr in);
  201. XMLPUBFUN char * XMLCALL    
  202.     xmlParserGetDirectory            (const char *filename);
  203.  
  204. XMLPUBFUN int XMLCALL     
  205.     xmlRegisterInputCallbacks        (xmlInputMatchCallback matchFunc,
  206.                          xmlInputOpenCallback openFunc,
  207.                          xmlInputReadCallback readFunc,
  208.                          xmlInputCloseCallback closeFunc);
  209.  
  210. xmlParserInputBufferPtr
  211.     __xmlParserInputBufferCreateFilename(const char *URI,
  212.                                         xmlCharEncoding enc);
  213.  
  214. #ifdef LIBXML_OUTPUT_ENABLED
  215. /*
  216.  * Interfaces for output
  217.  */
  218. XMLPUBFUN void XMLCALL    
  219.     xmlCleanupOutputCallbacks        (void);
  220. XMLPUBFUN void XMLCALL    
  221.     xmlRegisterDefaultOutputCallbacks(void);
  222. XMLPUBFUN xmlOutputBufferPtr XMLCALL
  223.     xmlAllocOutputBuffer        (xmlCharEncodingHandlerPtr encoder);
  224.  
  225. XMLPUBFUN xmlOutputBufferPtr XMLCALL
  226.     xmlOutputBufferCreateFilename    (const char *URI,
  227.                      xmlCharEncodingHandlerPtr encoder,
  228.                      int compression);
  229.  
  230. XMLPUBFUN xmlOutputBufferPtr XMLCALL
  231.     xmlOutputBufferCreateFile    (FILE *file,
  232.                      xmlCharEncodingHandlerPtr encoder);
  233.  
  234. XMLPUBFUN xmlOutputBufferPtr XMLCALL
  235.     xmlOutputBufferCreateBuffer    (xmlBufferPtr buffer,
  236.                      xmlCharEncodingHandlerPtr encoder);
  237.  
  238. XMLPUBFUN xmlOutputBufferPtr XMLCALL
  239.     xmlOutputBufferCreateFd        (int fd,
  240.                      xmlCharEncodingHandlerPtr encoder);
  241.  
  242. XMLPUBFUN xmlOutputBufferPtr XMLCALL
  243.     xmlOutputBufferCreateIO        (xmlOutputWriteCallback   iowrite,
  244.                      xmlOutputCloseCallback  ioclose,
  245.                      void *ioctx,
  246.                      xmlCharEncodingHandlerPtr encoder);
  247.  
  248. XMLPUBFUN int XMLCALL    
  249.     xmlOutputBufferWrite        (xmlOutputBufferPtr out,
  250.                      int len,
  251.                      const char *buf);
  252. XMLPUBFUN int XMLCALL    
  253.     xmlOutputBufferWriteString    (xmlOutputBufferPtr out,
  254.                      const char *str);
  255. XMLPUBFUN int XMLCALL    
  256.     xmlOutputBufferWriteEscape    (xmlOutputBufferPtr out,
  257.                      const xmlChar *str,
  258.                      xmlCharEncodingOutputFunc escaping);
  259.  
  260. XMLPUBFUN int XMLCALL    
  261.     xmlOutputBufferFlush        (xmlOutputBufferPtr out);
  262. XMLPUBFUN int XMLCALL    
  263.     xmlOutputBufferClose        (xmlOutputBufferPtr out);
  264.  
  265. XMLPUBFUN int XMLCALL     
  266.     xmlRegisterOutputCallbacks    (xmlOutputMatchCallback matchFunc,
  267.                      xmlOutputOpenCallback openFunc,
  268.                      xmlOutputWriteCallback writeFunc,
  269.                      xmlOutputCloseCallback closeFunc);
  270.  
  271. xmlOutputBufferPtr
  272.     __xmlOutputBufferCreateFilename(const char *URI,
  273.                               xmlCharEncodingHandlerPtr encoder,
  274.                               int compression);
  275.  
  276. #ifdef LIBXML_HTTP_ENABLED
  277. /*  This function only exists if HTTP support built into the library  */
  278. XMLPUBFUN void XMLCALL    
  279.     xmlRegisterHTTPPostCallbacks    (void );
  280. #endif /* LIBXML_HTTP_ENABLED */
  281.     
  282. #endif /* LIBXML_OUTPUT_ENABLED */
  283.  
  284. XMLPUBFUN xmlParserInputPtr XMLCALL
  285.     xmlCheckHTTPInput        (xmlParserCtxtPtr ctxt,
  286.                      xmlParserInputPtr ret);
  287.  
  288. /*
  289.  * A predefined entity loader disabling network accesses
  290.  */
  291. XMLPUBFUN xmlParserInputPtr XMLCALL 
  292.     xmlNoNetExternalEntityLoader    (const char *URL,
  293.                      const char *ID,
  294.                      xmlParserCtxtPtr ctxt);
  295.  
  296. /* 
  297.  * xmlNormalizeWindowsPath is obsolete, don't use it. 
  298.  * Check xmlCanonicPath in uri.h for a better alternative.
  299.  */
  300. XMLPUBFUN xmlChar * XMLCALL 
  301.     xmlNormalizeWindowsPath        (const xmlChar *path);
  302.  
  303. XMLPUBFUN int XMLCALL    
  304.     xmlCheckFilename        (const char *path);
  305. /**
  306.  * Default 'file://' protocol callbacks 
  307.  */
  308. XMLPUBFUN int XMLCALL    
  309.     xmlFileMatch             (const char *filename);
  310. XMLPUBFUN void * XMLCALL    
  311.     xmlFileOpen             (const char *filename);
  312. XMLPUBFUN int XMLCALL    
  313.     xmlFileRead             (void * context, 
  314.                      char * buffer, 
  315.                      int len);
  316. XMLPUBFUN int XMLCALL    
  317.     xmlFileClose             (void * context);
  318.  
  319. /**
  320.  * Default 'http://' protocol callbacks 
  321.  */
  322. #ifdef LIBXML_HTTP_ENABLED
  323. XMLPUBFUN int XMLCALL    
  324.     xmlIOHTTPMatch             (const char *filename);
  325. XMLPUBFUN void * XMLCALL    
  326.     xmlIOHTTPOpen             (const char *filename);
  327. #ifdef LIBXML_OUTPUT_ENABLED
  328. XMLPUBFUN void * XMLCALL    
  329.     xmlIOHTTPOpenW            (const char * post_uri,
  330.                      int   compression );
  331. #endif /* LIBXML_OUTPUT_ENABLED */
  332. XMLPUBFUN int XMLCALL     
  333.     xmlIOHTTPRead            (void * context, 
  334.                      char * buffer, 
  335.                      int len);
  336. XMLPUBFUN int XMLCALL    
  337.     xmlIOHTTPClose             (void * context);
  338. #endif /* LIBXML_HTTP_ENABLED */
  339.  
  340. /**
  341.  * Default 'ftp://' protocol callbacks 
  342.  */
  343. #ifdef LIBXML_FTP_ENABLED 
  344. XMLPUBFUN int XMLCALL    
  345.     xmlIOFTPMatch             (const char *filename);
  346. XMLPUBFUN void * XMLCALL    
  347.     xmlIOFTPOpen             (const char *filename);
  348. XMLPUBFUN int XMLCALL     
  349.     xmlIOFTPRead            (void * context, 
  350.                      char * buffer, 
  351.                      int len);
  352. XMLPUBFUN int XMLCALL     
  353.     xmlIOFTPClose             (void * context);
  354. #endif /* LIBXML_FTP_ENABLED */
  355.  
  356. #ifdef __cplusplus
  357. }
  358. #endif
  359.  
  360. #endif /* __XML_IO_H__ */
  361.